package com.platform.core.service;

import com.querydsl.core.types.Predicate;
import com.platform.dto.DictItemQo;
import com.platform.core.entity.SysDictItem;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.MultiValueMap;

import java.util.List;

/**
 * Description: 字典项-Service接口
 *
 * @author libin Created on 2019/7/17
 **/
public interface SysDictItemService extends BaseEntityBiz<SysDictItem> {
    /**
     * 分页查询
     *
     * @param predicate  查询条件
     * @param pageable   分页参数
     * @param parameters 查询参数
     * @return 列表
     */
    Page<DictItemQo> queryItems(Predicate predicate, Pageable pageable, MultiValueMap<String, String> parameters);


    /**
     * 添加字典
     *
     * @param dictItemQo 字典信息
     * @return DictGroupQo
     */
    DictItemQo create(DictItemQo dictItemQo);

    /**
     * 修改字典
     *
     * @param dictItemQo 字典信息
     * @return DictGroupQo
     */
    DictItemQo modify(DictItemQo dictItemQo);

    /**
     * 验证字典项编码是否重复
     *
     * @param id       ID（修改时用）
     * @param groupId  字典组ID
     * @param itemCode 编码
     * @return LONG
     */
    Long validDictItemCode(String id, String groupId, String itemCode);

    /**
     * 验证字典项名称是否重复
     *
     * @param id       ID(修改时用)
     * @param groupId  字典组ID
     * @param itemName 名称
     * @return LONG
     */
    Long validDictItemName(String id, String groupId, String itemName);


    List<DictItemQo> queryItemsByGroupCode(String groupCode);
}
